Shell Parameter Expansion
from ShellScriptの変数
日本語では変数展開
ググラビリティ低いので困る
https://wiki.bash-hackers.org/syntax/pe
https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html
めっちゃ種類ある
code:aaa
$ man bash | grep "^\s*\${.*}$" | tr -d " "
${parameter}
${parameter:-word}
${parameter:=word}
${parameter:?word}
${parameter:+word}
${parameter:offset}
${parameter:offset:length}
${!prefix*}
${!prefix@}
${!name@}
${!name*}
${#parameter}
${parameter#word}
${parameter##word}
${parameter%word}
${parameter%%word}
${parameter/pattern/string}
${hoge:=word}
$hogeが未定義かnullの場合、wordを代入して、それを展開
jsでの$hoge || $hoge="word"
${hoge:-word}
$hogeが未定義かnullの場合、wordを展開
いずれにせよ$hogeになにか代入したわけではないので値は変わらない
jsでの$hoge || "word"
code:ex.shell
$ A=aaa
$ echo ${B:-bbb} # $Bは未定義なので"bbb"が入る
bbb
$ echo ${A:-bbb} # $Aは定義済みなので$Aの値を返す
aaa
${BASH_SOURCE:-$0}
${hoge:?word}
$hogeが未定義かnullの場合、word を標準エラー出力に出力して終了
${hoge:+word}
jsでの$hoge && "word"
:の有無
${hoge:=word}
$hogeが未定義かnullの場合、wordを代入する
${hoge=word}
$hogeが未定義の場合、wordを代入する
code:ex.shell
$ echo ${A1:=word} # A1は未定義なのでwordが入る
word
$ A2= # A2にnullを入れる
$ echo ${A2:=word} # A2はnullなのでwordが入る
word
$ echo ${A3=word} # A3は未定義なのでwordが入る
word
$ A4= # A4にnullを入れる
$ echo ${A4=word} # A4はnullなので、nullが返される
# ←null
https://qiita.com/xtetsuji/items/381dc17241bda548045d#変数参照の副作用を利用する
https://shellscript.sunone.me/variable.html#:~:text=特殊な参照方法一覧表
https://qiita.com/t_nakayama0714/items/80b4c94de43643f4be51
21種類あるらしい
それぞれの解説